home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / comm / mail / Mutt089src.lha / Mutt-0.89i-AMIGA / src / init.h < prev    next >
C/C++ Source or Header  |  1998-01-28  |  12KB  |  264 lines

  1. /*
  2.  * Copyright (C) 1996-8 Michael R. Elkins <me@cs.hmc.edu>
  3.  * 
  4.  *     This program is free software; you can redistribute it and/or modify
  5.  *     it under the terms of the GNU General Public License as published by
  6.  *     the Free Software Foundation; either version 2 of the License, or
  7.  *     (at your option) any later version.
  8.  * 
  9.  *     This program is distributed in the hope that it will be useful,
  10.  *     but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  *     GNU General Public License for more details.
  13.  * 
  14.  *     You should have received a copy of the GNU General Public License
  15.  *     along with this program; if not, write to the Free Software
  16.  *     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17.  */ 
  18.  
  19. #include "sort.h"
  20. #include "buffy.h"
  21.  
  22. enum
  23. {
  24.   DT_BOOL, /* boolean option */
  25.   DT_NUM,  /* a number */
  26.   DT_STR,  /* a string */
  27.   DT_PATH, /* a pathname */
  28.   DT_QUAD, /* quad-option (yes/no/ask-yes/ask-no) */
  29.   DT_SORT, /* sorting methods */
  30.   DT_RX,   /* regular expressions */
  31.   DT_MAGIC /* mailbox type */
  32. };
  33.  
  34. /* flags to parse_set() */
  35. #define M_SET_INV    1    /* default is to invert all vars */
  36. #define M_SET_UNSET    2    /* default is to unset all vars */
  37.  
  38. /* forced redraw types */
  39. #define R_NONE            0
  40. #define R_INDEX            (1<<0)
  41. #define R_PAGER            (1<<1)
  42. #define R_BOTH            (R_INDEX | R_PAGER)
  43.  
  44. struct option_t
  45. {
  46.   char *option;
  47.   short type;
  48.   short redraw;
  49.   void *data;
  50.   size_t size; /* DT_STR and DT_PATH */
  51. };
  52.  
  53. #define S_DECL(x) x,sizeof(x)
  54.  
  55. struct option_t MuttVars[] = {
  56.   { "abort_nosubject",    DT_QUAD, R_NONE, (void *) OPT_SUBJECT,    0 },
  57.   { "abort_unmodified",    DT_QUAD, R_NONE, (void *) OPT_ABORT,    0 },
  58.   { "alias_file",    DT_PATH, R_NONE, S_DECL(AliasFile) },
  59.   { "allow_8bit",    DT_BOOL, R_NONE, (void *) OPTALLOW8BIT,    0 },
  60.   { "alternates",    DT_RX,     R_BOTH, &Alternates },
  61.   { "arrow_cursor",    DT_BOOL, R_BOTH, (void *) OPTARROWCURSOR, 0 },
  62.   { "ascii_chars",    DT_BOOL, R_BOTH, (void *) OPTASCIICHARS, 0 },
  63.   { "askbcc",        DT_BOOL, R_NONE, (void *) OPTASKBCC,    0 },
  64.   { "askcc",        DT_BOOL, R_NONE, (void *) OPTASKCC,    0 },
  65.   { "attach_split",    DT_BOOL, R_NONE, (void *) OPTATTACHSPLIT,0 },
  66.   { "attach_sep",    DT_STR,     R_NONE, S_DECL(AttachSep) },
  67.   { "attribution",    DT_STR,     R_NONE, S_DECL(Attribution) },
  68.   { "autoedit",        DT_BOOL, R_NONE, (void *) OPTAUTOEDIT,    0 },
  69.   { "auto_tag",        DT_BOOL, R_NONE, (void *) OPTAUTOTAG,    0 },
  70.   { "beep",        DT_BOOL, R_NONE, (void *) OPTBEEP,    0 },
  71.   { "charset",        DT_STR,     R_NONE, S_DECL(Charset) },
  72.   { "check_new",    DT_BOOL, R_NONE, (void *) OPTCHECKNEW,    0 },
  73.   { "confirmappend",    DT_BOOL, R_NONE, (void *) OPTCONFIRMAPPEND, 0 },
  74.   { "confirmcreate",    DT_BOOL, R_NONE, (void *) OPTCONFIRMCREATE, 0 },
  75.   { "copy",        DT_QUAD, R_NONE, (void *) OPT_COPY,    0 },
  76.   { "date_format",    DT_STR,     R_BOTH, S_DECL(DateFmt) },
  77.   { "decode_format",    DT_STR,     R_NONE, S_DECL(DecodeFmt) },
  78.   { "delete",        DT_QUAD, R_NONE, (void *) OPT_DELETE,    0 },
  79.   { "dsn_notify",    DT_STR,     R_NONE, S_DECL (DsnNotify) },
  80.   { "dsn_return",    DT_STR,     R_NONE, S_DECL (DsnReturn) },
  81.   { "edit_hdrs",    DT_BOOL, R_NONE, (void *) OPTEDITHDRS,    0 },
  82.   { "editor",        DT_PATH, R_NONE, S_DECL(Editor) },
  83.   { "escape",        DT_STR,     R_NONE, S_DECL(EscChar) },
  84.   { "fast_reply",    DT_BOOL, R_NONE, (void *) OPTFASTREPLY,    0 },
  85.   { "fcc_attach",    DT_BOOL, R_NONE, (void *) OPTFCCATTACH,    0 },
  86.   { "folder",        DT_PATH, R_NONE, S_DECL(Maildir) },
  87.   { "force_name",    DT_BOOL, R_NONE, (void *) OPTFORCENAME,    0 },
  88.   { "forw_decode",    DT_BOOL, R_NONE, (void *) OPTFORWDECODE },
  89.   { "forw_format",    DT_STR,     R_NONE, S_DECL(ForwFmt) },
  90.   { "forw_quote",    DT_BOOL, R_NONE, (void *) OPTFORWQUOTE },
  91.   { "hdr_format",    DT_STR,     R_BOTH, S_DECL(HdrFmt) },
  92.   { "hdrs",        DT_BOOL, R_NONE, (void *) OPTHDRS,    0 },
  93.   { "header",        DT_BOOL, R_NONE, (void *) OPTHEADER,    0 },
  94.   { "help",        DT_BOOL, R_BOTH, (void *) OPTHELP,    0 },
  95.   { "history",        DT_NUM,     R_NONE, &HistSize },
  96.   { "hostname",        DT_STR,     R_NONE, S_DECL(Fqdn) },
  97.   { "in_reply_to",    DT_STR,     R_NONE, S_DECL(InReplyTo) },
  98.   { "include",        DT_QUAD, R_NONE, (void *) OPT_INCLUDE,    0 },
  99.   { "indent_str",    DT_STR,     R_NONE, S_DECL(Prefix) },
  100.   { "ignore_list_reply_to", DT_BOOL, R_NONE, (void *) OPTIGNORELISTREPLYTO, 0 },
  101.   { "ispell",        DT_PATH, R_NONE, S_DECL(Ispell) },
  102.   { "locale",        DT_STR,  R_BOTH, S_DECL(Locale) },
  103.   { "mail_check",    DT_NUM,  R_NONE, &BuffyTimeout },
  104.   { "mailcap_path",    DT_STR,     R_NONE, S_DECL(MailcapPath) },
  105.   { "mark_old",        DT_BOOL, R_BOTH, (void *) OPTMARKOLD,    0 },
  106.   { "markers",        DT_BOOL, R_PAGER, (void *) OPTMARKERS,    0 },
  107.   { "mask",        DT_RX,     R_NONE, &Mask },
  108.   { "mbox",        DT_PATH, R_BOTH, S_DECL(Inbox) },
  109.   { "mbox_type",    DT_MAGIC,R_NONE, &DefaultMagic },
  110.   { "metoo",        DT_BOOL, R_NONE, (void *) OPTMETOO,    0 },
  111.   { "menu_scroll",    DT_BOOL, R_NONE, (void *) OPTMENUSCROLL },
  112.   { "mime_fwd",        DT_BOOL, R_NONE, (void *) OPTMIMEFWD,    0 },
  113.   { "move",        DT_QUAD, R_NONE, (void *) OPT_MOVE,    0 },
  114.   { "msg_format",    DT_STR,     R_NONE, S_DECL(MsgFmt) },
  115.   { "pager",        DT_PATH, R_NONE, S_DECL(Pager) },
  116.   { "pager_context",    DT_NUM,     R_NONE, &PagerContext },
  117.   { "pager_format",    DT_STR,     R_PAGER, S_DECL(PagerFmt) },
  118.   { "pager_index_lines",DT_NUM,     R_PAGER, &PagerIndexLines },
  119.   { "pager_stop",    DT_BOOL, R_NONE, (void *) OPTPAGERSTOP,    0 },
  120.  
  121. #ifdef _PGPPATH
  122.   { "pgp",        DT_PATH, R_NONE, S_DECL(Pgp) },
  123.   { "pgp_autosign",    DT_BOOL, R_NONE, (void *) OPTPGPAUTOSIGN, 0 },
  124.   { "pgp_autoencrypt",    DT_BOOL, R_NONE, (void *) OPTPGPAUTOENCRYPT, 0 },
  125.   { "pgp_encryptself",    DT_BOOL, R_NONE, (void *) OPTPGPENCRYPTSELF, 0 },
  126.   { "pgp_long_ids",    DT_BOOL, R_NONE, (void *) OPTPGPLONGIDS, 0 },
  127.   { "pgp_replyencrypt",    DT_BOOL, R_NONE, (void *) OPTPGPREPLYENCRYPT, 0 },
  128.   { "pgp_replysign",    DT_BOOL, R_NONE, (void *) OPTPGPREPLYSIGN, 0 },
  129.   { "pgp_sign_as",    DT_STR,     R_NONE, S_DECL(PgpSignAs) },
  130.   { "pgp_strict_enc",    DT_BOOL, R_NONE, (void *) OPTPGPSTRICTENC, 0 },
  131.   { "pgp_pubring",    DT_PATH, R_NONE, S_DECL(PgpPubring) },
  132.   { "pgp_secring",    DT_PATH, R_NONE, S_DECL(PgpSecring) },
  133.   { "pgp_timeout",    DT_NUM,     R_NONE, &PgpTimeout },
  134.   { "pgp_version",    DT_STR,  R_NONE, S_DECL(PgpVersion) },
  135.   { "verify_sig",    DT_QUAD, R_NONE, (void *) OPT_VERIFYSIG,    0 },
  136. #endif /* _PGPPATH */
  137.  
  138.   { "pipe_split",    DT_BOOL, R_NONE, (void *) OPTPIPESPLIT,    0 },
  139.   { "pipe_decode",    DT_BOOL, R_NONE, (void *) OPTPIPEDECODE,    0 },
  140.   { "pipe_sep",        DT_STR,     R_NONE, S_DECL(PipeSep) },
  141. #ifdef USE_POP
  142.   { "pop_delete",    DT_BOOL, R_NONE, (void *) OPTPOPDELETE,    0 },
  143.   { "pop_host",        DT_STR,     R_NONE, S_DECL(PopHost) },
  144.   { "pop_port",        DT_NUM,     R_NONE, &PopPort },
  145.   { "pop_pass",        DT_STR,     R_NONE, S_DECL(PopPass) },
  146.   { "pop_user",        DT_STR,     R_NONE, S_DECL(PopUser) },
  147. #endif /* USE_POP */
  148.   { "post_indent_str",    DT_STR,     R_NONE, S_DECL(PostIndentString) },
  149.   { "postpone",        DT_QUAD, R_NONE, (void *) OPT_POSTPONE,    0 },
  150.   { "postponed",    DT_PATH, R_NONE, S_DECL(Postponed) },
  151.   { "print",        DT_QUAD, R_NONE, (void *) OPT_PRINT,    0 },
  152.   { "print_cmd",    DT_PATH, R_NONE, S_DECL(PrintCmd) },
  153.   { "prompt_after",    DT_BOOL, R_NONE, (void *) OPTPROMPTAFTER, 0 },
  154.   { "quote_regexp",    DT_RX,     R_PAGER, &QuoteRegexp },
  155.   { "reply_regexp",    DT_RX,     R_INDEX, &ReplyRegexp },
  156.   { "read_inc",        DT_NUM,     R_NONE, &ReadInc },
  157.   { "read_only",    DT_BOOL, R_NONE, (void *) OPTREADONLY,    0 },
  158.   { "realname",        DT_STR,     R_BOTH, S_DECL(Realname) },
  159.   { "recall",        DT_QUAD, R_NONE, (void *) OPT_RECALL,    0 },
  160.   { "record",        DT_PATH, R_NONE, S_DECL(Outbox) },
  161.   { "references",    DT_NUM,     R_NONE, &TrimRef },
  162.   { "reply_to",        DT_QUAD, R_NONE, (void *) OPT_REPLYTO,    0 },
  163.   { "resolve",        DT_BOOL, R_NONE, (void *) OPTRESOLVE,    0 },
  164.   { "reverse_alias",    DT_BOOL, R_BOTH, (void *) OPTREVALIAS,    0 },
  165.   { "reverse_name",    DT_BOOL, R_BOTH, (void *) OPTREVNAME,    0 },
  166.   { "save_address",    DT_BOOL, R_NONE, (void *) OPTSAVEADDRESS,    0 },
  167.   { "save_empty",    DT_BOOL, R_NONE, (void *) OPTSAVEEMPTY,    0 },
  168.   { "save_name",    DT_BOOL, R_NONE, (void *) OPTSAVENAME,    0 },
  169.   { "sendmail",        DT_PATH, R_NONE, S_DECL(Sendmail) },
  170.   { "sendmail_bounce",    DT_PATH, R_NONE, S_DECL(SendmailBounce) },
  171.   { "shell",        DT_PATH, R_NONE, S_DECL(Shell) },
  172.   { "sig_dashes",    DT_BOOL, R_NONE, (void *) OPTSIGDASHES,    0 },
  173.   { "signature",    DT_PATH, R_NONE, S_DECL(Signature) },
  174.   { "simple_sear